package com.dd.cloud.user.entity.pres;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.gitee.sunchenbin.mybatis.actable.annotation.Column;
import com.gitee.sunchenbin.mybatis.actable.annotation.Table;
import com.gitee.sunchenbin.mybatis.actable.constants.MySqlTypeConstant;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.time.LocalDateTime;

/**
 * @author zk
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@Table(comment = "宏济堂处方详细信息表")
public class PresHjtDetail {
    /**
     * 处方编码 患者处方表
     */
    @TableId(value = "tencode", type = IdType.INPUT)
    @Column(isKey = true)
    private String tencode;

    /**
     * 委托单号 不必填
     */
    @Column(length = 50, comment = "委托单号")
    private String delnum;

    /**
     * 工商注册名称 必填
     */
    @Column(length = 50, comment = "医院名称")
    private String hospitalname;

    /**
     * 宏济堂客户编码 必填
     */
    @Column(length = 50, comment = "宏济堂客户编码")
    private String hospitalkey;

    /**
     * 患者姓名 必填
     */
    @Column(length = 50, comment = "患者姓名")
    private String name;

    /**
     * 性别 必填
     * 0 保密 1 男 2 女，传入数字
     * 传入 dhySYSTEM 代表男
     */
    @Column(length = 4, comment = "性别")
    private Integer sex;

    /**
     * 年龄 必填
     * 传入字符串，数字请传入大
     * 于 0 小于 130 的数字
     */
    @Column(length = 50, comment = "年龄")
    private String age;

    /**
     * 服用方式 必填
     * 内服，外用，熏洗，外洗，外敷，
     * 熨烫，溻渍，
     * 灌肠，保密， 传汉字（如医院服用
     * 方式不一致，需转换或给予反馈）
     */
    @Column(length = 50, comment = "服用方式")
    private String takemethod;

    /**
     * 药品总味数 必填
     * 该处方一共有多少味药(如这个处方
     * 有 3 味药:党参，丹参，石斛) 请传
     * 入数字
     */
    @Column(comment = "药品总味数")
    private Integer drugcount;

    /**
     * 是否代煎 必填
     * 传入 dhySYSTEM 表示默认代煎 0 ：代配(只配药不煎药) 1 ：代煎
     * （除汤剂外，其他加工类型默认0）
     */
    @Column(type = MySqlTypeConstant.TINYINT, comment = "是否代煎")
    private Integer isdaijian;

    /**
     * 加工类型 必填
     * 1.汤药
     * 3.打粉
     * 4.膏方代配(调剂,复核,发货) 5.膏方(配方,复核,泡药, 煎药,澄 清,浓缩,调膏,膏方包装，发货) 6.水丸
     * 7.蜜丸
     * 8.水蜜丸
     * 9.低温制粉
     * 10.颗粒
     * 11.浓缩丸
     * 17.打粉100
     * 18.胶囊
     */
    @Column(type = MySqlTypeConstant.TINYINT, comment = "加工类型")
    private Integer processtype;

    /**
     * 处方类型 必填
     * 0 是门诊 1 住院
     * 如果是 0 请dhySYSTEM
     */
    @Column(type = MySqlTypeConstant.TINYINT, comment = "处方类型")
    private Integer ptype;

    /**
     * 患者手机号码 不必填
     */
    @Column(length = 50, comment = "患者手机号码")
    private String phone;

    /**
     * 患者地址 不必填
     */
    @Column(length = 500, comment = "患者地址")
    private String address;

    /**
     * 患者就诊科室 不必填
     */
    @Column(length = 50, comment = "患者就诊科室")
    private String department;

    /**
     * 病区 不必填
     */
    @Column(length = 50, comment = "病区")
    private String inpatientarea;

    /**
     * 病房 不必填
     */
    @Column(length = 50, comment = "病房")
    private String ward;

    /**
     * 病床 不必填
     */
    @Column(length = 50, comment = "病床")
    private String sickbed;

    /**
     * 诊断结果 不必填
     */
    @Column(length = 500, comment = "诊断结果")
    private String diagresult;

    /**
     * 取药时间 条件必填
     * 如果时间格式请传入格式如：2016-
     * 03-25 08:00:00
     * 如果不为时间格式请传入对应字符串
     * 如：两天后
     */
    @Column(length = 50, comment = "取药时间")
    private String getdrugtime;

    /**
     * 取药序号 不必填
     */
    @Column(comment = "取药序号")
    private Integer getdrugnum;

    /**
     * 煎药方案 条件必填
     * 2:微压(密闭)(30min)
     * 24：微压(密闭)(25min)
     * 25：先煎(30)min一煎(25)min二煎
     * (15)min后下(10)min
     * 29:先煎(30)min一煎(20)min二煎
     * (15)min
     * 30:一煎(20)min二煎(15)min
     * 31:一煎(20)min二煎(15)min后下
     * (5)min
     * 36:先煎(30)min一煎(30)min
     * 38:一煎(20)min二煎(15)min后下
     * (10)min
     * （具体入参根据项目现场配
     * 置决定，无特殊要求传2）
     */
    @Column(type = MySqlTypeConstant.TINYINT, comment = "煎药方案")
    private Integer decscheme;

    /**
     * 包装量 条件必填
     * 每袋药业装量，请填入数字如 200，
     * 150,100，50 (包装量请传入大于等
     * 于 50并且小于等 280)建议设置为可
     * 选项
     */
    @Column(comment = "包装量")
    private Integer packagenum;

    /**
     * 操作人员 不必填
     */
    @Column(length = 50, comment = "操作人员")
    private String doperson;

    /**
     * 收件方 不必填
     * 如果需要快递，为必填（首次默认患
     * 者基本信息，含姓名、电话、地址；
     * 如有变化，在此基础上修改，并记
     * 录，作为后续默认值）
     */
    @Column(length = 50, comment = "收件方")
    private String dtbcompany;

    /**
     * 收件地址 不必填
     * 收件地址的详细地址（省、市、地址）
     */
    @Column(length = 100, comment = "收件地址")
    private String dtbaddress;

    /**
     * 收件电话 不必填
     */
    @Column(length = 50, comment = "收件电话")
    private String dtbphone;

    /**
     * 快递类型 条件必填
     * 默认传 dhySYSTEM 代表
     * 厂内发货其他传入编号:
     * 0：厂内配送
     * 1：顺丰（默认）
     * 2：圆通
     * 3：中通
     * 4：EMS
     * 5：其他
     * 6:速必达
     * 7:顺丰同城
     * 8:京东
     * 9:顺丰医寄通
     */
    @Column(type = MySqlTypeConstant.TINYINT, comment = "快递类型")
    private Integer dtbtype;

    /**
     * 浸泡加水量 条件必填
     * 默认 2000 如：2000
     */
    @Column(comment = "浸泡加水量")
    private Integer soakwater;

    /**
     * 浸泡时间 条件必填
     * 默认30
     */
    @Column(type = MySqlTypeConstant.TINYINT, comment = "浸泡时间")
    private Integer soaktime;

    /**
     * 标签数量 条件必填
     * 如有请传值，最好不要为 0
     * （贴数*次数+2）
     */
    @Column(comment = "标签数量")
    private Integer labelnum;

    /**
     * 备注 不必填
     * 以此作为备注传输
     * 除汤剂外，其他剂型特殊装
     * 量和加工要求、随货打印单
     * 据等可以在此备注
     */
    @Column(length = 1000, comment = "备注")
    private String remark;

    /**
     * 医生姓名 必填
     */
    @Column(length = 32, comment = "医生姓名")
    private String doctor;

    /**
     * 医生脚注 不必填
     */
    @Column(length = 50, comment = "医生脚注")
    private String footnote;

    /**
     * 煎药方式 条件必填
     * 传入 dhySYSTEM 默认
     * 为无
     * 其他请传入编号 1:先煎
     * 2:后下 3:加糖加蜜4:
     * 先煎和后下 11:急煎 14:
     * 自煎 15:浓煎 17:加酒煎
     */
    @Column(type = MySqlTypeConstant.TINYINT, comment = "煎药方式")
    private Integer decmothed;

    /**
     * 服用方法 条件必填
     * 传入 dhySYSTEM 默认为无
     * 其他请传入编号 1：水煎餐前 2：水煎餐后
     */
    @Column(comment = "服用方法")
    private Integer takeway;

    /**
     * 备注a 不必填
     */
    @Column(length = 1000, comment = "备注a")
    private String remarka;

    /**
     * 备注b 不必填
     */
    @Column(length = 1000, comment = "备注b")
    private String remarkb;

    /**
     * 快递支付方式 不必填
     * 1 寄方付
     * 2 收方付
     * 3 第三方付
     */
    @Column(length = 10, comment = "快递支付方式")
    private String payment;

    /**
     * 金额 分单位
     */
    @Column(comment = "金额")
    private Integer money;

    /**
     * 社保号、医保号、健康卡号 不必填
     */
    @Column(length = 50, comment = "社保号")
    private String healthcardno;

    /**
     * 传方序号 必填
     * 根据当天处方的发送序号传输
     */
    @Column(length = 50, comment = "传方序号")
    private String outpatientindex;

    /**
     * 病历号、病案号 不必填
     */
    @Column(length = 50, comment = "病历号")
    private String casenumber;

    /**
     * 住院号、门诊号 不必填
     */
    @Column(length = 50, comment = "住院号")
    private String outpatientnumber;

    /**
     * 跳过流程 不必填
     * 0: 不跳过
     * 1：跳过调剂
     * 2：跳过调剂和复核
     */
    @Column(comment = "跳过流程")
    private Integer procedurejump = 0;

    /**
     * 病人档案 不必填
     * 传 PDF 或图片
     */
    @Column(length = 50, comment = "病人档案")
    private String patientfile;

    /**
     * 档案类型 不必填
     * 0. 无(默认)
     * 1. 图片
     * 2. PDF
     */
    @Column(type = MySqlTypeConstant.TINYINT, comment = "档案类型")
    private Integer filetype = 0;

    /**
     * 特殊处方 不必填
     * 1. 正常
     * 2. 克隆方
     * 3. 协定方
     */
    @Column(type = MySqlTypeConstant.TINYINT, comment = "特殊处方")
    private Integer isrepetition = 1;

    /**
     * 特殊群体 不必填
     * 1 成人，2 孕妇，3 儿童 4老年人，0 保密
     */
    @Column(type = MySqlTypeConstant.TINYINT, comment = "特殊群体")
    private Integer particular = 1;

    /**
     * 身份验证 不必填
     * 对接验证扩展字段( 新 增)，加密方式咨询接口提供方
     */
    @Column(length = 50, comment = "身份验证")
    private String token;

    /**
     * 创建时间
     */
    @Column(comment = "创建时间")
    private LocalDateTime createDate;
}
